﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WeddingEventManagement_API
{
    public interface IEventManager
    {
        //Read
        Event GetEvent(int eventID);
        List<Event> GetEvents();
        List<Event> GetEvents(long start, long end);
        List<Event> GetEvents(int clientID);
        List<Event> GetEvents(string filter);
        List<Event> GetMostRecentlyViewedEvents(int num);
        List<Event> GetMostRecentlyAddedEvents(int num);
        List<Event> GetUpcomingEvents(int num);

        // Event Types
        List<EventType> GetAllEventTypes();
        void CreateEventType(string name, string color);
        void DeleteEventType(int id);

        //Packages
        List<Package> GetAllPackages();
        void CreatePackage(string name, decimal price, string description, string color);
        void DeletePackage(int id);

        //event location
        void UpdateEventLocation(EventLocation eventLocation, Guid updateUserID);
        EventLocation GetEventLocation(int eventID, int locationID);

        //Create
        int CreateEvent(int clientID, string title, DateTime startDate, DateTime endDate, EventTypeEnum eventType,
            PackageType packageType, Guid createdByUserID, string notes, bool flowers, decimal flowersBudget, bool decor, decimal decorBudget, bool coordination, int guests);

        //Update
        void UpdateEvent(Event csEvent, Guid updateUserID);

        //Delete
        void DeleteEvent(int eventID);

        
    }
}

